// pages/index/index.js
import { userApi, partnerApi } from '../../services/api';

Page({
  data: {
    // 自定义Tabbar
    customTabbar: {
      activeTab: 'home',
      tabs: [
        { key: 'home', icon: '/images/icon-home.png', label: '首页' },
        { key: 'calendar', icon: '/images/icon-calendar.png', label: '日历' },
        { key: 'message', icon: '/images/icon-message.png', label: '消息' }
      ]
    },
    
    // 用户信息
    userInfo: {
      avatarUrl: '/images/avatar-default.png',
      nickName: '星辰'
    },

    // 伴侣信息
    partnerInfo: {
      avatarUrl: '/images/avatar-fox.png',
      nickName: '月光'
    },

    // 情感状态
    userMood: 'happy',
    partnerMood: 'calm',
    daysTogether: 365,
    syncPercent: 85,
    capsuleCount: 24,

    // 当前心情
    currentMood: 'happy',

    // 胶囊数据
    recentCapsules: [
      {
        id: 1,
        title: '第一次约会',
        coverImage: '/images/capsule-d7637e9902ed4e61b182b1599732f645.jpg',
        createTime: '2023-06-15',
        locked: false
      },
      {
        id: 2,
        title: '生日惊喜',
        coverImage: '/images/capsule-2.jpg',
        createTime: '2023-08-20',
        locked: true
      },
      {
        id: 3,
        title: '旅行计划',
        coverImage: '/images/capsule-3.jpg',
        createTime: '2023-10-01',
        locked: true
      },
      {
        id: 4,
        title: '周年纪念',
        coverImage: '/images/capsule-4.jpg',
        createTime: '2023-12-25',
        locked: false
      }
    ],

    // 时间线数据
    timeline: [
      {
        id: 1,
        date: '今天 09:30',
        text: '记录了一个开心的心情',
        images: []
      },
      {
        id: 2,
        date: '昨天 14:20',
        text: '开启了"第一次约会"胶囊',
        images: ['/images/memory-d7637e9902ed4e61b182b1599732f645.jpg']
      },
      {
        id: 3,
        date: '前天 18:45',
        text: '创建了一个未来信件胶囊',
        images: []
      }
    ],

    // 心情小偷
    stealChance: 3,

    // UI状态
    showFabMenu: false,
    showCreateModal: false,
    refreshing: false,
    isHeaderScrolled: false // 确保这个状态存在
  },

  onLoad() {
    // 检查用户是否已登录
    const token = wx.getStorageSync('token');
    const userInfo = wx.getStorageSync('userInfo');
    const user = wx.getStorageSync('user');
    
    // 检查多种可能的登录状态存储方式
    if (!token || (!userInfo && !user)) {
      // 用户未登录，跳转到登录页面
      wx.redirectTo({
        url: '/pages/login/login'
      });
      return;
    }
    
    // 页面加载时检查登录状态
    this.checkLoginStatus();
    
    // 初始化数据
    this.initData();
  },

  onShow() {
    // 页面显示时检查登录状态
    this.checkLoginStatus();
    
    // 刷新数据
    this.refreshData();
  },

  // 检查登录状态
  checkLoginStatus() {
    const token = wx.getStorageSync('token');
    const userInfo = wx.getStorageSync('userInfo');
    const user = wx.getStorageSync('user');
    
    // 检查多种可能的登录状态存储方式
    if (!token || (!userInfo && !user)) {
      // 用户未登录，跳转到登录页面
      wx.redirectTo({
        url: '/pages/login/login'
      });
      return false;
    }
    
    return true;
  },

  // 初始化数据
  initData() {
    // 从API获取用户信息
    this.loadUserData();
    
    // 从API获取伴侣信息
    this.loadPartnerInfo();
  },

  // 刷新数据
  refreshData() {
    // 刷新用户数据
    this.loadUserData();
    
    // 刷新伴侣数据
    this.loadPartnerInfo();
  },

  // 加载用户数据
  async loadUserData() {
    try {
      // 从API获取用户信息
      const userData = await userApi.getProfile();
      
      // 验证响应数据格式
      if (userData && userData.success && userData.data) {
        // 构建用户信息对象，确保头像地址不为空
        const userInfo = {
          ...this.data.userInfo,
          ...userData.data,
          // 如果没有获取到头像地址，使用默认头像
          avatarUrl: userData.data.avatarUrl || '/images/avatar-default.png',
          nickName: userData.data.nickname || userData.data.nickName || '用户'
        };
        
        // 更新页面数据
        this.setData({ userInfo });
        
        // 保存到本地存储
        wx.setStorageSync('userInfo', userInfo);
      } else {
        throw new Error('用户信息获取失败或数据格式不正确');
      }
    } catch (error) {
      console.error('获取用户信息失败:', error);
      
      // 降级到本地存储
      const storedUserInfo = wx.getStorageSync('userInfo');
      if (storedUserInfo) {
        this.setData({
          userInfo: {
            ...this.data.userInfo,
            ...storedUserInfo
          }
        });
      } else {
        // 如果本地存储也没有数据，使用默认值
        this.setData({
          userInfo: {
            ...this.data.userInfo,
            avatarUrl: '/images/avatar-default.png',
            nickName: '用户'
          }
        });
      }
    }
  },

  // 获取伴侣信息
  async loadPartnerInfo() {
    try {
      const partnerResponse = await partnerApi.getPartnerInfo();
      console.log('伴侣信息:', partnerResponse);
      
      if (partnerResponse && partnerResponse.success && partnerResponse.data) {
        // 确保伴侣信息包含必要的字段
        const partnerInfo = {
          ...this.data.partnerInfo,
          ...partnerResponse.data,
          nickName: partnerResponse.data.nickname || partnerResponse.data.nickName || '伴侣',
          avatarUrl: partnerResponse.data.avatarUrl || '/images/avatar-fox.png'
        };
        
        this.setData({
          partnerInfo: partnerInfo
        });
        
        // 保存到本地存储
        wx.setStorageSync('partnerInfo', partnerInfo);
      } else if (partnerResponse && !partnerResponse.success) {
        console.warn('伴侣信息获取失败:', partnerResponse.message);
        // 显示默认伴侣信息
        this.setData({
          partnerInfo: {
            ...this.data.partnerInfo,
            nickName: '暂无伴侣',
            avatarUrl: '/images/default-avatar.png'
          }
        });
      } else {
        console.warn('伴侣信息获取失败或数据格式不正确:', partnerResponse);
        // 显示默认伴侣信息
        this.setData({
          partnerInfo: {
            ...this.data.partnerInfo,
            nickName: '暂无伴侣',
            avatarUrl: '/images/default-avatar.png'
          }
        });
      }
    } catch (error) {
      console.error('获取伴侣信息失败:', error);
      
      // 显示默认伴侣信息
      this.setData({
        partnerInfo: {
          ...this.data.partnerInfo,
          nickName: '暂无伴侣',
          avatarUrl: '/images/default-avatar.png'
        }
      });
      
      // 降级到本地存储
      const partnerInfo = wx.getStorageSync('partnerInfo');
      if (partnerInfo) {
        this.setData({
          partnerInfo: {
            ...this.data.partnerInfo,
            ...partnerInfo
          }
        });
      }
    }
  },

  // 页面滚动处理
  onPageScroll(e) {
    // 定义滚动阈值常量
    const SCROLL_THRESHOLD = 10;
    const scrollTop = e.scrollTop;
    const isHeaderScrolled = scrollTop > SCROLL_THRESHOLD;
    
    // 仅在状态变化时更新
    if (isHeaderScrolled !== this.data.isHeaderScrolled) {
      this.setData({
        isHeaderScrolled: isHeaderScrolled
      });
    }
    
    // 添加滚动位置到顶部按钮显示逻辑（可选）
    const showBackToTop = scrollTop > 300;
    if (showBackToTop !== this.data.showBackToTop) {
      this.setData({ showBackToTop });
    }
  },
  
  // 返回顶部按钮点击事件（可选）
  backToTop() {
    wx.pageScroll({
      scrollTop: 0,
      duration: 300
    });
  },

  // 下拉刷新
  onRefresh() {
    this.setData({ refreshing: true });
    
    // 刷新数据
    this.refreshData();
    
    // 模拟刷新数据
    setTimeout(() => {
      this.setData({ refreshing: false });
      wx.stopPullDownRefresh();
    }, 1500);
  },

  // 上拉触底
  onReachBottom() {
    // 可以在这里处理上拉加载更多
  },

  // 图片加载错误处理
  onImageError(e) {
    console.log('图片加载失败:', e);
    const { id } = e.currentTarget.dataset;
    
    // 处理不同类型的图片错误
    if (id === 'user-avatar') {
      this.setData({
        'userInfo.avatarUrl': '/images/default-avatar.png'
      });
    } else if (id === 'partner-avatar') {
      this.setData({
        'partnerInfo.avatarUrl': '/images/default-avatar.png'
      });
    } else if (typeof id === 'number') {
      // 处理胶囊封面图片
      const updateKey = `recentCapsules[${id}].coverImage`;
      this.setData({
        [updateKey]: '/images/default-cover.png'
      });
    }
  },

  // 设置心情
  setMood(e) {
    const mood = e.currentTarget.dataset.mood;
    this.setData({
      currentMood: mood
    });
  },

  // 查看所有胶囊
  viewAllCapsules() {
    wx.navigateTo({
      url: '/pages/capsule/list'
    });
  },

  // 查看胶囊详情
  viewCapsule(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/capsule/detail?id=${id}`
    });
  },

  // 查看小偷历史
  viewThiefHistory() {
    wx.navigateTo({
      url: '/pages/thief/history'
    });
  },

  // 开始偷取
  startSteal() {
    wx.navigateTo({
      url: '/pages/thief/select'
    });
  },

  // 切换Tab
  switchTab(e) {
    const { tab } = e.currentTarget.dataset;
    if (!tab || tab === this.data.customTabbar.activeTab) return;
    
    const customTabbar = { ...this.data.customTabbar, activeTab: tab };
    this.setData({ customTabbar });
    
    switch (tab) {
      case 'home':
        // 首页逻辑
        break;
      case 'calendar':
        wx.navigateTo({
          url: '/pages/calendar/calendar'
        });
        break;
      case 'message':
        wx.navigateTo({
          url: '/pages/message/message'
        });
        break;
      default:
        break;
    }
  },

  // 显示创建菜单
  showCreateMenu() {
    this.setData({ showFabMenu: true });
  },

  // 隐藏创建菜单
  hideCreateMenu() {
    this.setData({ showFabMenu: false });
  },

  // 显示创建弹窗
  showCreateModal() {
    this.setData({ 
      showCreateModal: true,
      showFabMenu: false
    });
  },

  // 隐藏创建弹窗
  hideCreateModal() {
    this.setData({ showCreateModal: false });
  },

  // 阻止事件冒泡
  stopPropagation(e) {
    // 阻止点击事件冒泡，避免点击弹窗内容时关闭弹窗
    console.log('阻止事件冒泡');
  },

  // 打开胶囊
  openCapsule(e) {
    const capsule = e.currentTarget.dataset.capsule;
    if (capsule.locked) {
      wx.showToast({
        title: '胶囊尚未解锁',
        icon: 'none'
      });
      return;
    }

    wx.navigateTo({
      url: `/pages/capsule/detail?id=${capsule.id}`
    });
  },

  // 创建记忆胶囊
  createMemory() {
    this.hideCreateModal();
    wx.navigateTo({
      url: '/pages/capsule/create'
    });
  },

  // 创建心情记录
  createMood() {
    this.hideCreateModal();
    wx.navigateTo({
      url: '/pages/mood/create'
    });
  },

  // 创建未来信件
  createLetter() {
    this.hideCreateModal();
    wx.navigateTo({
      url: '/pages/letter/create'
    });
  },

  // 创建心情小偷
  createThief() {
    this.hideCreateModal();
    wx.navigateTo({
      url: '/pages/thief/create'
    });
  },

  // 创建特效胶囊
  createSpecialCapsule() {
    this.hideCreateModal();
    wx.navigateTo({
      url: '/pages/capsule/create-special'
    });
  },

  // 创建语音日记
  createVoiceDiary() {
    this.hideCreateModal();
    wx.navigateTo({
      url: '/pages/diary/create-voice'
    });
  },

  // 查看个人资料
  viewProfile() {
    wx.navigateTo({
      url: '/pages/profile/profile'
    });
  },

  onPartnerAvatarError(e) {
    console.log('伴侣头像加载失败', e);
    // 确保使用正确的路径更新partnerInfo中的头像URL
    this.setData({
      'partnerInfo.avatarUrl': '/images/default-avatar.png'
    });
    
    // 添加错误提示
    wx.showToast({
      title: '头像加载失败',
      icon: 'none'
    });
  },

  onUserAvatarError(e) {
    console.log('用户头像加载失败', e);
    // 确保使用正确的路径更新userInfo中的头像URL
    this.setData({
      'userInfo.avatarUrl': '/images/default-avatar.png'
    });
  }
});